package Pacote2;

import grails.test.*
import les.*

class UsuarioDeIntegranteTests extends functionaltestplugin.FunctionalTestCase {
	
	// Cria-se um usuário para um novo integrante, e depois checa-se
	// se o usuário está sendo listado na lista de usuários do sistema, e ve
	// na pagina de show daquele usuario que está vinculado ao integrante
	void testCriarUsuario() {
		get ("/usuario/login")
		
		form() {
			email = "encontrosejc@gmail.com"
			senha = "123456"
			click "entrar"
		}
		
		get ("/integrante/create")
				
		form() {
			nome = "joao paulo ribeiro da silva"
			vaiTerUsuario = "sim"
			usuarioEmail = "joaopauloribeirodasilva@gmail.com"
			usuarioSenha = "abcdef"
			selects['usuarioTipo'].select "Jota"
			click "create"
		}
		
		get ("/usuario/list")
		
		assertContentContains "joaopauloribeirodasilva@gmail.com"
		
		click "joaopauloribeirodasilva@gmail.com"
		
		assertContentContains "joao paulo ribeiro da silva"
	}
	
	// criar um integrante sem usuário, e depois editar o usuário para
	// adicionar um usuário para ele
	void testIntegranteSemUsuario() {
		get ("/usuario/login")
		
		form() {
			email = "encontrosejc@gmail.com"
			senha = "123456"
			click "entrar"
		}
		
		get ("/integrante/create")
		
		form() {
			nome = "joao paulo sem usuario"
			vaiTerUsuario = "nao"
			click "create"
		}
		
		get ("/integrante/list")
		
		click "listarTodos"
		
		assertContentContains "joao paulo sem usuario"
		
		click "joao paulo sem usuario"
		
		click "edit"
		
		form() {
			nome = "joao paulo alterado agora com usuario"
			vaiTerUsuario = "sim"
			usuarioEmail = "joaopaulocomusuario@gmail.com"
			usuarioSenha = "abcdef"
			selects['usuarioTipo'].select "Jota"
			click "salvar"
		}
		
		assertContentContains "Integrante atualizado(a) com sucesso"
		assertContentContains "joaopaulocomusuario@gmail.com"
		assertContentContains "joao paulo alterado agora com usuario"
	}
	
	// tentar criar usuário violando as restrições (email inválido, senha menor
	// que 5 ou maior que 10 caracteres), mostrando mensagem de erro
	void testUsuarioComErro() {
		get ("/usuario/login")
		
		form() {
			email = "encontrosejc@gmail.com"
			senha = "123456"
			click "entrar"
		}
		
		get ("/integrante/create")
		
		form() {
			nome = "joao paulo usuario com erro"
			vaiTerUsuario = "sim"
			usuarioEmail = "testeerrogmail.com"
			usuarioSenha = "abcdef"
			selects['usuarioTipo'].select "Jota"
			click "create"
		}
		
		assertContentContains "O campo email n&atilde;o &eacute; um endere&ccedil;o de email v&aacute;lido."
		
		form() {
			nome = "joao paulo usuario com erro"
			vaiTerUsuario = "sim"
			usuarioEmail = "testeerro@gmail.com"
			usuarioSenha = "abcd"
			selects['usuarioTipo'].select "Jota"
			click "create"
		}
		
		assertContentContains "A senha do usuario deve ter entre 5 e 10 caracteres."
		
		form() {
			nome = "joao paulo usuario com erro"
			vaiTerUsuario = "sim"
			usuarioEmail = "testeerro@gmail.com"
			usuarioSenha = "abcdefghijklmno"
			selects['usuarioTipo'].select "Jota"
			click "create"
		}
		
		assertContentContains "A senha do usuario deve ter entre 5 e 10 caracteres."
	}
	
}
